10 research outputs found

    Software Perfomance Assessment at Architectural Level: A Methodology and its Application

    Get PDF
    Las arquitecturas software son una valiosa herramienta para la evaluación de las propiedades cualitativas y cuantitativas de los sistemas en sus primeras fases de desarrollo. Conseguir el diseño adecuado es crítico para asegurar la bondad de dichas propiedades. Tomar decisiones tempranas equivocadas puede implicar considerables y costosos cambios en un futuro. Dichas decisiones afectarían a muchas propiedades del sistema, tales como su rendimiento, seguridad, fiabilidad o facilidad de mantenimiento. Desde el punto de vista del rendimiento software, la ingeniería del rendimiento del software (SPE) es una disciplina de investigación madura y comúnmente aceptada que propone una evaluación basada en modelos en las primeras fases del ciclo de vida de desarrollo software. Un problema en este campo de investigación es que las metodologías hasta ahora propuestas no ofrecen una interpretación de los resultados obtenidos durante el análisis del rendimiento, ni utilizan dichos resultados para proponer alternativas para la mejora de la propia arquitectura software. Hasta la fecha, esta interpretación y mejora requiere de la experiencia y pericia de los ingenieros software, en especial de expertos en ingeniería de prestaciones. Además, a pesar del gran número de propuestas para evaluar el rendimiento de sistemas software, muy pocos de estos estudios teóricos son posteriormente aplicados a sistemas software reales. El objetivo de esta tesis es presentar una metodología para el asesoramiento de decisiones arquitecturales para la mejora, desde el punto de vista de las prestaciones, de las sistemas software. La metodología hace uso del Lenguaje Unificado de Modelado (UML) para representar las arquitecturas software y de métodos formales, concretamente redes de Petri, como modelo de prestaciones. El asesoramiento, basado en patrones y antipatrones, intenta detectar los principales problemas que afectan a las prestaciones del sistema y propone posibles mejoras para mejoras dichas prestaciones. Como primer paso, estudiamos y analizamos los resultados del rendimiento de diferentes estilos arquitectónicos. A continuación, sistematizamos los conocimientos previamente obtenidos para proponer una metodología y comprobamos su aplicabilidad asesorando un caso de estudio real, una arquitectura de interoperabilidad para adaptar interfaces a personas con discapacidad conforme a sus capacidades y preferencias. Finalmente, se presenta una herramienta para la evaluación del rendimiento como un producto derivado del propio ciclo de vida software

    Extra Functional Properties Evaluation of Self-managed Software Systems with Formal Methods

    Get PDF
    Multitud de aplicaciones software actuales están abocadas a operar en contextos dinámicos. Estos pueden manifestarse en términos de cambios en el entorno de ejecución de la aplicación, cambios en los requisitos de la aplicación, cambios en la carga de trabajo recibida por la aplicación, o cambios en cualquiera de los elementos que la aplicación software pueda percibir y verse afectada. Además, estos contextos dinámicos no están restringidos a un dominio particular de aplicaciones sino que se pueden encontrar en múltiples dominios, tales como: sistemas empotrados, arquitecturas orientadas a servicios, clusters para computación de altas prestaciones, dispositivos móviles o software para el funcionamiento de la red. La existencia de estas características disuade a los ingenieros de desarrollar software que no sea capaz de cambiar de modo alguno su ejecución para acomodarla al contexto en el que se está ejecutando el software en cada momento. Por lo tanto, con el objetivo de que el software pueda satisfacer sus requisitos en todo momento, este debe incluir mecanismos para poder cambiar su configuración de ejecución. Además, debido a que los cambios de contexto son frecuentes y afectan a múltiples dispositivos de la aplicación, la intervención humana que cambie manualmente la configuración del software no es una solución factible. Para enfrentarse a estos desafíos, la comunidad de Ingeniería del Software ha propuesto nuevos paradigmas que posibilitan el desarrollo de software que se enfrenta a contextos cambiantes de un modo automático; por ejemplo las propuestas Autonomic Computing y Self-* Software. En tales propuestas es el propio software quien gestiona sus mecanismos para cambiar la configuración de ejecución, sin requerir por lo tanto intervención humana alguna. Un aspecto esencial del software auto-adaptativo (Self-adaptive Software es uno de los términos más generales para referirse a Self-* Software) es el de planear sus cambios o adaptaciones. Los planes de adaptación determinan tanto el modo en el que se adaptará el software como los momentos oportunos para ejecutar tales adaptaciones. Hay un gran conjunto de situaciones para las cuales la propiedad de auto- adaptación es una solución. Una de esas situaciones es la de mantener al sistema satisfaciendo sus requisitos extra funcionales, tales como la calidad de servicio (Quality of Service, QoS) y su consumo de energía. Esta tesis ha investigado esa situación mediante el uso de métodos formales. Una de las contribuciones de esta tesis es la propuesta para asentar en una arquitectura software los sistemas que son auto-adaptativos respecto a su QoS y su consumo de energía. Con este objetivo, esta parte de la investigación la guía una arquitectura de tres capas de referencia para sistemas auto-adaptativos. La bondad del uso de una arquitectura de referencia es que muestra fácilmente los nuevos desafíos en el diseño de este tipo de sistemas. Naturalmente, la planificación de la adaptación es una de las actividades consideradas en la arquitectura. Otra de las contribuciones de la tesis es la propuesta de métodos para la creación de planes de adaptación. Los métodos formales juegan un rol esencial en esta actividad, ya que posibilitan el estudio de las propiedades extra funcionales de los sistemas en diferentes configuraciones. El método formal utilizado para estos análisis es el de las redes de Petri markovianas. Una vez que se ha creado el plan de adaptación, hemos investigado la utilización de los métodos formales para la evaluación de QoS y consumo de energía de los sistemas auto-adaptativos. Por lo tanto, se ha contribuido a la comunidad de análisis de QoS con el análisis de un nuevo y particularmente complejo tipo de sistemas software. Para llevar a cabo este análisis se requiere el modelado de los cambios din·micos del contexto de ejecución, para lo que se han utilizado una variedad de métodos formales, como los Markov modulated Poisson processes para estimar los parámetros de las variaciones en la carga de trabajo recibida por la aplicación, o los hidden Markov models para predecir el estado del entorno de ejecución. Estos modelos han sido usados junto a las redes de Petri para evaluar sistemas auto-adaptativos y obtener resultados sobre su QoS y consumo de energía. El trabajo de investigación anterior sacó a la luz el hecho de que la adaptabilidad de un sistema no es una propiedad tan fácilmente cuantificable como las propiedades de QoS -por ejemplo, el tiempo de respuesta- o el consumo de energÌa. En consecuencia, se ha investigado en esa dirección y, como resultado, otra de las contribuciones de esta tesis es la propuesta de un conjunto de métricas para la cuantificación de la propiedad de adaptabilidad de sistemas basados en servicios. Para conseguir las anteriores contribuciones se realiza un uso intensivo de modelos y transformaciones de modelos; tarea para la que se han seguido las mejores prácticas en el campo de investigación de la Ingeniería orientada a modelos (Model-driven Engineering, MDE). El trabajo de investigación de esta tesis en el campo MDE ha contribuido con: el aumento de la potencia de modelado de un lenguaje de modelado de software propuesto anteriormente y métodos de transformación desde dos lenguajes de modelado de software a redes de Petri estocasticas

    Recepción y gestión de pedidos y envíos especializado sobre el ERP Microsoft Dynamics NAV 2009

    Get PDF
    Este proyecto cubre la necesidad que tiene una empresa para informatizar y gestionar correctamente todo el flujo de trabajo relacionado con sus pedidos, desde su recepción a la salida de los materiales del almacén. Todo ello debe integrarse con el ERP con el que trabaja la empresa, que en este caso es Microsoft Dynamics Nav 2009. De esta forma, se busca la optimización de los recursos, evitando en lo posible los errores que puedan producirse durante la gestión, automatizando los procesos que lo permitan para agilizar el trabajo (con el ahorro de tiempo y trabajo que ello conlleva) e integrando todos los documentos relacionados en el ERP, lo que es importante para poder generar históricos consistentes y que permitan un mínimo de trazabilidad, además de conseguir garantizar la seguridad de los datos

    Software de gestión para la documentación académica en centros de secundaria

    Get PDF
    Este PFC propone un “Software de gestión para la documentación académica en Centros de Secundaria”, englobando dos aplicaciones complementarias para centros de Educación Secundaria y el Servicio Provincial de Educación. Es un modelo de carácter estructural que afecta a la gestión, organización y comunicación de los procesos administrativos y documentales de los centros. Esta propuesta es una herramienta formal y legal, que ofrece diferentes aplicaciones de tramitación, transmisión y agilización de la documentación educativa, y que ha sido construída para ponerla en práctica con posterioridad. Esta aplicación de gestión hace una propuesta concreta, útil y viable en torno a tres ámbitos: gestión administrativa, documentación académica y gestión de recursos. Permite opciones para compartir información (uso, selección, gestión, organización), buscando la mayor eficiencia en términos de costes y tiempos. A partir de la consideración de aspectos previos (estudio de viabilidad, DAR), se continuó con el proceso de diseño del sistema y se tomaron decisiones sobre las herramientas a utilizar (Java, NSIS, Jasperreport, MySQL, Java Web Start, etc.), y se implementó el proyecto realizando los diagramas entidad-relación, diseñando las interfaces de usuario, elaborando los ficheros que genera la aplicación, creando la firma digital para validar los archivos jar, etc. Finalmente, se realizaron dos tipos de instaladores para adaptar el sistema a las necesidades de los centros educativos y simplificar así el despliegue de la aplicación. El programa ha requerido un seguimiento exhaustivo que se ha ajustado a la planificación inicial, a pruebas del sistema realizadas por los usuarios finales, reuniones para tomar las decisiones sobre el diseño de interfaz de usuario, etc. La mejora de procesos y métodos en la gestión de los centros, justifica su implantación para dar respuesta a una necesidad coyuntural ya que desarrolla una aplicación completa: desde un análisis de requisitos hasta su utilización por el usuario

    Detección de Ataques de Integridad en Redes Inteligentes mediante el uso de Técnicas de Aprendizaje Automático

    Get PDF
    Las redes inteligentes (smart grids) no están exentas de ser atacadas; de hecho, son un gran atractivo para los ciberdelincuentes ya que pueden obtener beneficios económicos importantes falsificando sus consumos energéticos. En el presente trabajo se desarrollan y evalúan detectores de ataques de integridad sobre estas redes. Además, se llevan a cabo ataques de integridad sobre conjuntos de datos reales para poner a prueba los detectores implementados. Tanto los conjuntos de datos, como los escenarios de ataque, como los detectores están integrados en un framework. El propósito de este framework es facilitar la inclusión de nuevos conjuntos de datos, escenarios de ataque y detectores para así proporcionar a futuras programadoras y programadores una herramienta sencilla con la que puedan experimentar e investigar en este área. Este framework está desarrollado en el lenguaje de programación Python y se encuentra dividido en módulos, probados con más de 1000 tests. Cada uno de éstos módulos representa una actividad a realizar: preprocesar los datos, implementar detectores, lanzar los experimentos y analizar los resultados. Los detectores se basan en distintas técnicas: modelos autorregresivos, clústering, árboles de decisión, comparación de distribuciones de frecuencia relativa y aprendizaje profundo. Los escenarios de ataque también son variopintos; los hay basados en valores medios del pasado, otros que se basan en permutar valores dependiendo del precio del kWh en ese instante, otros que generan consumos sintéticos solucionando problemas de programación lineal y otros que multiplican todos los registros por un valor entre 0 y 1. La ejecución de los experimentos es computacionalmente muy costosa. Se requiere aproximadamente un mes de cómputo en un clúster de supercomputación para finalizar la experimentación utilizando todos los conjuntos de datos, escenarios de ataque y detectores considerados en este trabajo si se utilizan 1000 contadores energéticos por cada conjunto de datos. Se ha desarrollado una interfaz web interactiva que facilita la visualización de los resultados de los experimentos filtrando por conjunto de datos y/o escenario de ataque. Esto permite al o a la analista evaluar el rendimiento de cada detector de manera global o específica a cada escenario de ataque. Se han alcanzado todos los objetivos que se plantearon en la propuesta de este Trabajo Fin de Grado. Además, sin estar finalizado en su totalidad, un trabajo relacionado con este proyecto de investigación ha sido aceptado por el comité del European Dependable Computing Conference (EDCC) para ser presentado en septiembre de este mismo año.<br /

    Performance Analysis of Apache Storm Applications using Stochastic Petri Nets

    Get PDF
    Real-time data-processing applications, such as those developed using Apache Storm, need to address highly demanding performance requirements. Engineers should assess these performance requirements while they configure their Storm designs to specific execution contexts, i.e., multi-user private or public cloud infrastructures. To this end, we propose a quality-driven framework for Apache Storm, that covers the following steps. The design with UML, using a novel profile for Apache Storm, allowing performance metrics definition. The transformation of the design into a performance model, con- cretely stochastic Petri nets. Last but not least, the simulation of the performance model and the retrieval of performance results

    Perfomance Analysis and Resource Optimisation of Critical Systems Modelled by Petri Nets

    Get PDF
    Un sistema crítico debe cumplir con su misión a pesar de la presencia de problemas de seguridad. Este tipo de sistemas se suele desplegar en entornos heterogéneos, donde pueden ser objeto de intentos de intrusión, robo de información confidencial u otro tipo de ataques. Los sistemas, en general, tienen que ser rediseñados después de que ocurra un incidente de seguridad, lo que puede conducir a consecuencias graves, como el enorme costo de reimplementar o reprogramar todo el sistema, así como las posibles pérdidas económicas. Así, la seguridad ha de ser concebida como una parte integral del desarrollo de sistemas y como una necesidad singular de lo que el sistema debe realizar (es decir, un requisito no funcional del sistema). Así pues, al diseñar sistemas críticos es fundamental estudiar los ataques que se pueden producir y planificar cómo reaccionar frente a ellos, con el fin de mantener el cumplimiento de requerimientos funcionales y no funcionales del sistema. A pesar de que los problemas de seguridad se consideren, también es necesario tener en cuenta los costes incurridos para garantizar un determinado nivel de seguridad en sistemas críticos. De hecho, los costes de seguridad puede ser un factor muy relevante ya que puede abarcar diferentes dimensiones, como el presupuesto, el rendimiento y la fiabilidad. Muchos de estos sistemas críticos que incorporan técnicas de tolerancia a fallos (sistemas FT) para hacer frente a las cuestiones de seguridad son sistemas complejos, que utilizan recursos que pueden estar comprometidos (es decir, pueden fallar) por la activación de los fallos y/o errores provocados por posibles ataques. Estos sistemas pueden ser modelados como sistemas de eventos discretos donde los recursos son compartidos, también llamados sistemas de asignación de recursos. Esta tesis se centra en los sistemas FT con recursos compartidos modelados mediante redes de Petri (Petri nets, PN). Estos sistemas son generalmente tan grandes que el cálculo exacto de su rendimiento se convierte en una tarea de cálculo muy compleja, debido al problema de la explosión del espacio de estados. Como resultado de ello, una tarea que requiere una exploración exhaustiva en el espacio de estados es incomputable (en un plazo prudencial) para sistemas grandes. Las principales aportaciones de esta tesis son tres. Primero, se ofrecen diferentes modelos, usando el Lenguaje Unificado de Modelado (Unified Modelling Language, UML) y las redes de Petri, que ayudan a incorporar las cuestiones de seguridad y tolerancia a fallos en primer plano durante la fase de diseño de los sistemas, permitiendo así, por ejemplo, el análisis del compromiso entre seguridad y rendimiento. En segundo lugar, se proporcionan varios algoritmos para calcular el rendimiento (también bajo condiciones de fallo) mediante el cálculo de cotas de rendimiento superiores, evitando así el problema de la explosión del espacio de estados. Por último, se proporcionan algoritmos para calcular cómo compensar la degradación de rendimiento que se produce ante una situación inesperada en un sistema con tolerancia a fallos

    Evaluación del rendimiento de aplicaciones intensivas en datos con Apache Tez

    Get PDF
    Durante los últimos años, el Big Data ha sufrido un gran auge en un rango muy variado de sectores del mercado. Analizar todos los datos disponibles para conocer la demanda de productos por adelantado, o incluso para crear dichas demandas, se ha vuelto una práctica común para muchas empresas. El procesamiento de estas grandes cantidades de datos no es algo trivial y ha de realizarse con tecnologı́as especı́ficamente diseñadas para ese propósito. Es por ello que cada vez surgen más propuestas en esa área de la informática, cada una con sus ventajas e inconvenientes. En todas ellas, no obstante, hay una caracterı́stica de vital importancia: el rendimiento. El trabajo que aquı́ se presenta se enmarca dentro del proyecto DICE, situado en el marco del plan Horizon2020 de la Comisión Europea, y en el cual participa el Grupo de I+D en Computación Distribuida (DiSCo) de la Universidad de Zaragoza. El objetivo final de DICE consiste en ofrecer un perfil UML original, un conjunto de herramientas software y una metodologı́a que ayudarán a los diseñadores de aplicaciones intensivas en datos a plantear la seguridad, eficiencia y fiabilidad de dichas aplicaciones. Entre dichas herramientas software se encuentra un simulador capaz de evaluar el rendimiento de aplicaciones basadas en diferentes tecnologı́as (DICE-Simulator), y es a este simulador al cual se le va a aportar una nueva tecnologı́a mediante la realización de este trabajo. Para poder realizar dicha aportación, integrando la tecnologı́a de Apache Tez en el simu- lador, se han realizado una serie procesos para analizar y modelar la tecnologı́a. En primer lugar, se ha investigado a fondo el funcionamiento de Tez, comprobando su rendimiento en aplicaciones reales y extrayendo tantos los conceptos básicos de la tecnologı́a como aquellos relativos al rendimiento de la misma, vitales para poder simular de forma fiel su comporta- miento. A continuación, habiendo extraı́do toda la información necesaria resultante de la investi- gación, se ha creado un perfil para UML que captura de forma precisa todos los conceptos relativos al funcionamiento de Tez y a su rendimiento en aplicaciones reales. Una vez completado el modelo UML, ha sido necesario transformar dicho modelo a otro distinto que permitiese analizar y evaluar el rendimiento, basado en los conceptos recogido por el primero. Para ello, se ha propuesto un conjunto de patrones de transformación del modelo UML a un modelo de redes de Petri, concretamente a redes de Petri estocásticas, las cuales permiten analizar el rendimiento en aplicaciones informáticas. Por último, se han realizado una serie de experimentos para verificar que las transforma- ciones propuestas son correctas y reflejan de forma precisa el funcionamiento de una aplicación Tez real en términos de rendimiento

    Evaluación del rendimiento de aplicaciones intensivas en datos con Apache Spark

    Get PDF
    Durante los últimos años, el Big Data ha sufrido un gran auge en un rango muy variado de sectores del mercado. Analizar todos los datos disponibles para conocer la demanda de productos por adelantado, o incluso para crear dichas demandas, se ha vuelto una práctica común para muchas empresas. El procesamiento de estas grandes cantidades de datos no es algo trivial y ha de realizarse con tecnologı́as especı́ficamente diseñadas para ese propósito. Es por ello que cada vez surgen más propuestas en esa área de la informática, cada una con sus ventajas e inconvenientes. En todas ellas, no obstante, hay una caracterı́stica de vital importancia: el rendimiento. El trabajo que aquı́ se presenta se enmarca dentro del proyecto DICE, situado en el marco del plan Horizon2020 de la Comisión Europea, y en el cual participa el Grupo de I+D en Computación Distribuida (DiSCo) de la Universidad de Zaragoza. El objetivo final de DICE consiste en ofrecer un perfil UML original, un conjunto de herramientas software y una metodologı́a que ayudarán a los diseñadores de aplicaciones intensivas en datos a plantear la seguridad, eficiencia y fiabilidad de dichas aplicaciones. Entre dichas herramientas software se encuentra un simulador capaz de evaluar el rendimiento de aplicaciones basadas en diferentes tecnologı́as (DICE-Simulator), y es a este simulador al cual se le va a aportar una nueva tecnologı́a mediante la realización de este trabajo. Para poder realizar dicha aportación, integrando la tecnologı́a de Apache Spark en el simulador, se han realizado una serie procesos para analizar y modelar la tecnologı́a. En primer lugar, se ha investigado a fondo el funcionamiento de Spark, comprobando su rendimiento en aplicaciones reales y extrayendo tantos los conceptos básicos de la tecnologı́a como aquellos relativos al rendimiento de la misma, vitales para poder simular de forma fiel su comportamiento. A continuación, habiendo extraı́do toda la información necesaria resultante de la investiación, se ha creado un perfil para UML que captura de forma precisa todos los conceptos relativos al funcionamiento de Spark y a su rendimiento en aplicaciones reales. Una vez completado el modelo UML, ha sido necesario transformar dicho modelo a otro distinto que permitiese analizar y evaluar el rendimiento, basado en los conceptos recogido por el primero. Para ello, se ha propuesto un conjunto de patrones de transformación del modelo UML a un modelo de redes de Petri, concretamente a redes de Petri estocásticas, las cuales permiten analizar el rendimiento en aplicaciones informáticas. Por último, se han realizado una serie de experimentos para verificar que las transformaciones propuestas son correctas y reflejan de forma precisa el funcionamiento de una aplicación Spark real en términos de rendimiento

    Implementación de un generador de estrategias de autoconfiguración para la mejora de prestaciones de software autoadaptativo

    Get PDF
    Dentro de la Ingeniería del software, el paradigma open-world propone la creación de sistemas software heterogéneos y distribuidos con un entorno de ejecución cambiante e impredecible. Partiendo de una arquitectura de tres capas propuesta en la literatura, ésta se adapta para la implementación de sistemas software autoadaptativos en base a prestaciones en el contexto open-world. El objetivo de este PFC es la implementación de la parte más desafiante de la arquitectura: El generador de estrategias de autoconfiguración. Para ello será necesario el modelado diagramas UML con anotaciones MARTE, la traducción de los diagramas a redes de Petri y la evaluación temporal de las redes de Petri. El resultado obtenido ha sido un paquete ejecutable preparado para ser integrado en sistemas autoadaptativos que siguen la arquitectura de tres capas referenciada. Este paquete genera una estrategia de autoconfiguración que dirigirá las reconfiguraciones del software autoadaptativo reaccionando a los cambios percibidos en el entorno open-world del sistema. Mediante el desarrollo de este software ejecutable, se ha dado un paso adelante hacia la implementación real de sistemas autoadaptativos en base a sus prestaciones
    corecore